package model.area_effect;

import model.effects.Effect;
import model.entity.Entity;

/**
 * Gerneral abstract class of AreaOfEffects.
 * @author Zachary
 */
public abstract class AreaOfEffect implements Interactable {
	private String name;
	private String graphicID;
	private Effect effect;
	
	/**
	 * Constructor for AreaOfEffect.
	 * @param name
	 * @param graphicID
	 * @param effect
	 */
	protected AreaOfEffect(String name, String graphicID, Effect effect) {
		this.name = name;
		this.graphicID = graphicID;
		this.effect = effect;
	}
	
	/**
	 * Override this method in the subclasses.
	 */
	public abstract void interact(Entity e);
	
	/**
	 * Get the graphic ID for this AreaOfEffect.
	 * @return
	 */
	public String getGraphicID(){
		return this.graphicID;
	}
	
	/**
	 * Get the effect on this AreaOfEffect.
	 * @return
	 */
	public Effect getEffect(){
		return this.effect;
	}
	
	/**
	 * Set the effect on this AreaOfEffect.
	 * @param effect
	 */
	public void setEffect(Effect effect){
		this.effect = effect;
	}
	
	/**
	 * Get the name of this AreaOfEffect.
	 * @return
	 */
	public String getName(){
		return this.name;
	}
}
